前一章我們介紹了Labels 和 Selectors,知道說可以透過label來檢索k8s內的資源。不過除了透過label外,還能夠透過Field來進行檢索。
顧名思義,能夠透過field讓你檢索k8s內的資源,透過一個或多個的resource fields,去查找k8s的資源物件。
像以下這些就是搜尋範例:
例如這邊使用namespace不為default來查詢(記得要加-A 不然你就是在default namespace內 查namespace不為default的pod 不可能會有)
kubectl get pods -A --field-selector metadata.namespace!=default
那結果就會像下圖這樣
並且也支援多個resource type查詢
kubectl get pods,services -A --field-selector metadata.namespace!=default
結果如下:
可以看到他會分兩段顯示符合條件的資源。
能夠查哪些field,是看不同的Kubernetes resource type決定的,但是所有的resource type都支援兩種field:
假如你使用的是不支援的field,例如下面指令:
kubectl get ingress --field-selector foo.bar=baz
那就會跳出像下面的錯誤:
Error from server (BadRequest): Unable to find "networking.k8s.io/v1, Resource=ingresses" that match label selector "", field selector "foo.bar=baz": "foo.bar" is not a known field selector: only "metadata.name", "metadata.namespace"
告訴你說這裡面只有metadata.name和metadata.namespace。
不過跟label 和 Selectors不同,fields Selectors無法使用in
,notin
這種方式去檢索field,只能使用=
, ==
和 !=
目前k8s內常用的東西做了個簡單介紹了,下一章會開始介紹跟k8s有關的工具。